﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DSheet.Core.Data
{
    public class DDRelation : DRelation
    {
        public DDRelation(DocDim upper, DocDim lower)
            : base(upper, lower)
        {
        }

        /// <summary>
        /// 获取节点关联的维度树
        /// </summary>
        /// <param name="context"></param>
        /// <param name="node"></param>
        /// <returns></returns>
        protected override DTree OnGetTree(DContext context, DTreeNode node)
        {
            DimData data = Lower.GetData(context);
            //List<DimDataRelation> relations = new List<DimDataRelation>();// DMockData.GetDRelation(context.DocCode);
            //for (int index = 0; index < relations.Count; )
            //{
            //    if (relations[index].UpperCode != node.Code)
            //    {
            //        relations.RemoveAt(index);
            //    }
            //    else
            //    {
            //        index++;
            //    }
            //}

            //// 去除多余的节点
            //if (relations.Count > 0)
            //{
            //    RemoveDDataNode(data, relations);
            //}

            return data.ConvertToTree();
        }

        //private void RemoveDDataNode(DData data, List<DDataRelation> relations)
        //{
        //    for (int index = 0; index < data.Nodes.Count; )
        //    {
        //        bool needRemove = true;
        //        foreach (var r in relations)
        //        {
        //            if (r.LowerCode == data.Nodes[index].Code)
        //            {
        //                needRemove = false;
        //                break;
        //            }
        //        }

        //        if (needRemove)
        //        {
        //            data.Nodes.RemoveAt(index);
        //        }
        //        else
        //        {
        //            index++;
        //        }
        //    }
        //}

        //private void RemoveDDataNode(DDataNode node, List<DDataRelation> relations)
        //{
        //    for (int index = 0; index < node.Nodes.Count; )
        //    {
        //        bool needRemove = true;
        //        foreach (var r in relations)
        //        {
        //            if (r.LowerCode == node.Nodes[index].Code)
        //            {
        //                needRemove = false;
        //                break;
        //            }
        //        }

        //        if (needRemove)
        //        {
        //            node.Nodes.RemoveAt(index);
        //        }
        //        else
        //        {
        //            index++;
        //        }
        //    }
        //}
    }
}
